<?php
class Modelo_modulos extends Model {
    public $datos = array();
    public $tabla1 = "min_modulos";
    public $tabla2 = "min_permisos";

    function Modelo_modulos() {
        parent::Model();
    }

    /**
     * Genera letras y numeros aleatorios
     * @param <type> $minLen
     * @param <type> $maxLen
     * @param <type> $alphaLower
     * @param <type> $alphaUpper
     * @param <type> $num
     * @param <type> $batch
     * @return <type>
     */
    function genRandStr($minLen, $maxLen, $alphaLower = 1, $alphaUpper = 1, $num = 1, $batch = 1) {

        $alphaLowerArray = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j');
        $alphaUpperArray = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J');
        $numArray = array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9);

        if (isset($minLen) && isset($maxLen)) {
            if ($minLen == $maxLen) {
                $strLen = $minLen;
            } else {
                $strLen = rand($minLen, $maxLen);
            }
            $merged = array_merge($alphaLowerArray, $alphaUpperArray, $numArray);

            if ($alphaLower == 1 && $alphaUpper == 1 && $num == 1) {
                $finalArray = array_merge($alphaLowerArray, $alphaUpperArray, $numArray);
            } elseif ($alphaLower == 1 && $alphaUpper == 1 && $num == 0) {
                $finalArray = array_merge($alphaLowerArray, $alphaUpperArray);
            } elseif ($alphaLower == 1 && $alphaUpper == 0 && $num == 1) {
                $finalArray = array_merge($alphaLowerArray, $numArray);
            } elseif ($alphaLower == 0 && $alphaUpper == 1 && $num == 1) {
                $finalArray = array_merge($alphaUpperArray, $numArray);
            } elseif ($alphaLower == 1 && $alphaUpper == 0 && $num == 0) {
                $finalArray = $alphaLowerArray;
            } elseif ($alphaLower == 0 && $alphaUpper == 1 && $num == 0) {
                $finalArray = $alphaUpperArray;
            } elseif ($alphaLower == 0 && $alphaUpper == 0 && $num == 1) {
                $finalArray = $numArray;
            } else {
                return FALSE;
            }

            $count = count($finalArray);

            if ($batch == 1) {
                $str = '';
                $i = 1;
                while ($i <= $strLen) {
                    $rand = rand(0, $count-1);
                    $newChar = $finalArray[$rand];
                    $str .= $newChar;
                    $i++;
                }
                $result = $str;
            } else {
                $j = 1;
                $result = array();
                while ($j <= $batch) {
                    $str = '';
                    $i = 1;
                    while ($i <= $strLen) {
                        $rand = rand(0, $count);
                        $newChar = $finalArray[$rand];
                        $str .= $newChar;
                        $i++;
                    }
                    $result[] = $str;
                    $j++;
                }
            }

            return $result;
        }
    }

    /**
     * Trae modulos
     */
    function get_modulos() {
        $this->datos = $this->db->query("SELECT * FROM $this->tabla1 ORDER BY empresa, peso ASC");
    }

    /**
     * Retorna true o false si el usuario tiene o no perisos para ver el modulo
     * @param <type> $modulo
     */
    function get_activo($modulo,$empresa) {
        $query = $this->db->query("SELECT estado FROM $this->tabla1 WHERE nombre='".$modulo."' AND empresa='".$empresa."'");
        if ($query->num_rows() > 0) {
            $row=$query->row();
            return $row->estado;
        }else {
            return 'no';
        }

    }
    /**
     * Retorna true o false si el usuario tiene o no perisos para ver el modulo
     * @param <type> $modulo
     */
    function get_permisos($modulo,$empresa) {
        $query = $this->db->query("SELECT estado FROM $this->tabla2 WHERE id_usuario='".$this->session->userdata('id')."' AND modulo='".$modulo."' AND empresa='".$empresa."'");
        if ($query->num_rows() > 0) {
            $row=$query->row();
            return $row->estado;
        }else {
            return 'no';
        }

    }

    /**
     * Retorna true o false si el usuario tiene o no perisos para ver el modulo
     * @param <type> $modulo
     */
    function get_permisos_modificar($modulo,$empresa) {
        $query = $this->db->query("SELECT modificar FROM $this->tabla2 WHERE id_usuario='".$this->session->userdata('id')."' AND modulo='".$modulo."' AND empresa='".$empresa."'");
        if ($query->num_rows() > 0) {
            $row=$query->row();
            return $row->modificar;
        }else {
            return 'no';
        }

    }

    /**
     * Retorna true o false si el usuario tiene o no perisos para ver el modulo
     * @param <type> $modulo
     */
    function get_permisos_eliminar($modulo,$empresa) {
        $query = $this->db->query("SELECT eliminar FROM $this->tabla2 WHERE id_usuario='".$this->session->userdata('id')."' AND modulo='".$modulo."' AND empresa='".$empresa."'");
        if ($query->num_rows() > 0) {
            $row=$query->row();
            return $row->eliminar;
        }else {
            return 'no';
        }

    }



}
?>
